package org.jiangnantaste.util;

import java.sql.*;
import java.io.*;
import java.nio.*;

public class UploadImage {
    protected Connection dbConnection;
    protected String driverName = "com.mysql.jdbc.Driver";
    protected String dbURL = "jdbc:mysql://localhost/picturedemo";
    protected String userID = "root";
    protected String passwd = "jerry";

    public boolean storeImage(String sqlstr, File file) {
        try {
            FileInputStream fin = new FileInputStream(file);
            ByteBuffer nbf = ByteBuffer.allocate((int) file.length());
            byte[] array = new byte[1024];
            int offset = 0, length = 0;
            while ((length = fin.read(array)) > 0) {
                if (length != 1024)
                    nbf.put(array, 0, length);
                else
                    nbf.put(array);
                offset += length;
            }
            fin.close();
            byte[] content = nbf.array();
            return setImage(sqlstr, content);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;
    }

    private boolean setImage(String sqlstr, byte[] in) {
        boolean flag = false;
        if (sqlstr == null)
            sqlstr = "select * from image";
        try {
            Class.forName(driverName);
            dbConnection = DriverManager.getConnection(dbURL, userID, passwd);
            Statement stmt = dbConnection.createStatement(
                    ResultSet.TYPE_SCROLL_INSENSITIVE,
                    ResultSet.CONCUR_UPDATABLE);
            ResultSet rs = stmt.executeQuery(sqlstr);
            if (rs.next()) {
                rs.updateBytes(4, in);
                rs.updateRow();
            } else {
                rs.moveToInsertRow();
                rs.updateString(2, "lena");
                rs.updateString(3, "lena");
                rs.updateBytes(4, in);
                rs.updateBoolean(5, true);
                rs.insertRow();
            }
            rs.close();
            flag = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
    }  

    public static void main(String[] args) {
        UploadImage upload = new UploadImage();
        try {
            File file = new File("E:/Jerry/MyProj/PictureDemo/firebird.jpg");
            if (upload.storeImage(null, file))
                System.out.print("true");
            else
                System.out.print("False");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}